"use strict";
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
        to[j] = from[i];
    return to;
};
/*
 * @Descripttion:
 * @version:
 * @Author: wtzhang
 * @Date: 2021-06-03 08:55:07
 * @LastEditors: wtzhang
 * @LastEditTime: 2021-06-03 11:27:04
 */
var str = '你好，hello-Typescript!';
var flag = true;
// flag = '123'
// 第一种定义数组
var arr = [1, 2, 3, 4]; // 指定number类型
var arrstr = ['1', '2']; // 指定为 String类型
// 注意： 在指定的 类型数组里面 出现其他类型数据类型，就会报错
// 第二种定义数组方法
var arr2 = [1, 2, 3, 4];
console.log(arr2);
// 元组类型（tuple）数组的一种
var arrTup = ['你好', 123, true];
// 枚举类型
var Flag;
(function (Flag) {
    Flag[Flag["success"] = 1] = "success";
    Flag[Flag["error"] = -1] = "error";
})(Flag || (Flag = {}));
var f = Flag.success;
console.log(f);
// 官方案例：
var Color;
(function (Color) {
    Color[Color["red"] = 0] = "red";
    Color[Color["blue"] = 1] = "blue";
    Color[Color["orange"] = 2] = "orange";
})(Color || (Color = {}));
var c = Color.blue;
console.log(c); // 1
// 任意类型 any
var foo = '123';
foo = 123;
foo = true;
// 有点像之前js没有定义类型的意思
// ** any类型的用处
var oBox = document.getElementById('box');
oBox.style.color = 'red';
// null 和 undefined
// let num: number;
// console.log(num); // 虽然会打印 undefined， 但是报错
var num;
num = '123';
num = true;
console.log(num); // 正确
// void 类型
// void类型：typescript中的void表示没有任何类型，一般用于定义方法的时候方法没有返回值。
// ES5 中
// function run() {
//   console.log('running');
// }
// run()
// function run(): number {
//   console.log('running');
// } // 虽然会输出，但是报错
// ts正确写法
function run() {
    console.log('running');
}
run();
// never 类型
// never类型：是其他类型（包括 null 和 undefined）的子类型。
// 代表从不会出现的值，这意味着声明never的变量只能被never类型所赋值。
// 比如：
var b;
// b = null; // 不好意思报错了
b = undefined; // 只能就是声明定义类型
// never
// let a: never;
// a = (() => {
//   throw new Error('错误')
// })()
// 函数的定义
var fun2 = function () {
    return 123;
};
console.log(fun2()); // 123
// ts 定义方法传参
function getInfo(name, age) {
    return name + "----" + age;
}
console.log(getInfo('jack', 123)); // jack----123
// 可选参数
function getInfo1(name, age) {
    return name + "----" + age;
}
console.log(getInfo1('jack')); // jack----undefined
// 默认参数
function getInfo2(name, age) {
    if (age === void 0) { age = 20; }
    return name + "----" + age;
}
console.log(getInfo2('jack')); // jack----20
// 多参数（剩余参数）
// 常规
// function sum(a: number, b: number, c: number):number {
//   return a + b + c
// }
// console.log(sum(1, 2, 3)); // 6
function sum() {
    var args = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
    }
    var _a = __spreadArray([], args), a = _a[0], b = _a[1], c = _a[2];
    return a + b + c;
}
console.log(sum(1, 2, 3)); // 6
